package top.kaoshanji.p1ch01e;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.ArrayList;

/**
 * 1.6 优化变长参数的方法调用
 * author kaoshanji
 * ^_^
 * create time 2024/12/23 10:13
 */
public class VarargsWarning {

    private static final Logger logger = LogManager.getLogger(VarargsWarning.class);

    public static void main(String[] args) {

        // 运行 代码清单 p1ch01e-01
        System.out.println(new VarargsWarning().sum(1, 2, 3, 4));

        // 运行 代码清单 p1ch01e-02
        VarargsWarning.useVarargs(new ArrayList<String>());
    }

    // 变长参数方法示例
    public int sum(int... args) {
        logger.info("...代码清单 p1ch01e-01：变长参数方法示例(1.6节)...");

        int result = 0;
        for (int value: args) {
            result += value;
        }
        return result;
    }

    // 使用@SafeVarargs注解抑制编译器警告的示例
    @SafeVarargs
    public static <T> T useVarargs(T... args) {
        logger.info("...代码清单 p1ch01e-02：使用@SafeVarargs注解抑制编译器警告的示例(1.6节)...");

        return args.length > 0 ? args[0] : null;
    }

}
